const express = require('express');
const loginRouter = express.Router();
const { encryption, createId, addUser } = require('../utils/index');
// 引入模拟文件数据库
let users = require('../db/data.json');
// 配置路由
// 展示登录页
loginRouter.get('/login', (req, res) => {
    res.render('login');
})

// 登录页面点击登录发送post请求路由
loginRouter.post('/login', (req,res)=>{
    console.log(req.body);
    // 1. 获取用户名密码
    let {username, password} = req.body;
    // 2. 给密码进行md5加密
    password = encryption(password);
    // 3. 用用户名和密码 去数据库里查找
    let user = users.find(item=>item.username===username && item.password === password);
    if(user){//    3-1. 找到了，登录成功，将用户名和用户id存入session,跳转到用户中心页
        delete user.password;
        req.session.user = user;
        res.redirect('/ucenter');
    }else{//    3-2. 没找到，提示用户名或密码错误，跳转会login页面
        console.log('用户名或密码错误');
        res.redirect('/login');
    }
})

// 退出登录路由
loginRouter.get('/logout', (req, res)=>{
    req.session.destroy(()=>{
        console.log('欢迎下次光临!');
        res.redirect('/index');
    })
})

// 注册页
loginRouter.get('/register', (req, res) => {
    res.render('register');
})
// 用户提交注册时处理
loginRouter.post('/register', (req, res) => {
    // 1. 将用户添加进users数据库
    // 添加之前要判断用户名是否已经存在，如果存在不添加，不存在添加
    // 2. 添加成功之后，跳转到login登录页面
    let { username, password } = req.body;
    // 添加之前，要对密码进行加密，生成一个唯一id
    let user = {
        id: createId(),
        username,
        password: encryption(password)
    }
    // 判断 username在users是否已经存在 【todo】
    let result = users.find(item => item.username === username);
    if (!result) {
        // 添加用户
        users.push(user);
        // 1. 将json格式的数组，转化为json格式的字符串
        users = JSON.stringify(users);
        // 2. 添加用户
        addUser(users);
        // 3. 跳转到登录页面
        res.redirect('/login');
    }else{
        console.log('用户已存在');
        res.redirect('/register');
    }
})
loginRouter.get('/login', (req, res) => {
    res.render('login');
})

module.exports = loginRouter;